# 1. 实现菜单函数，输出下列信息，返回用户输入的编号，并进行输入校验。
#
#     print("****************************************")
#     print("*                                学生管理系统                         *")
#     print("*              1. 添加新学生信息              *")
#     print("*             2. 通过学号修改学生信息                 *")
#     print("*                3. 通过学号删除学生信息                 *")
#     print("*                4. 通过姓名删除学生信息                 *")
#     print("*             5. 通过学号查询学生信息          *")
#     print("*                6. 通过姓名查询学生信息          *")
#     print("*                7. 显示所有学生信息             *")
#     print("*                8. 退出系统                                           *")
#     print("****************************************")
#     select_op = input("输入编号选择操作：")
#
# 2. 实现控制函数，用来控制菜单的输出与功能的选择，直到用户选择8，结束程序运行。
# 3. 实现添加学生函数，函数参数为编号，姓名，年龄，性别四个参数，返回是否添加成功的结果，要求编号不可重复。
# 4. 实现修改函数，参数为学号，如果学生存在，则进行修改，不存在输出提示，并返回是否修改成功
# 5. 实现删除函数，参数为学号，如果学生存在，则进行删除，不存在输出提示，并返回是否删除成功
# 6. 实现删除函数，参数为姓名，如果学生存在，则进行删除（同名学生全部删除），不存在输出提示，并返回是否删除成功
# 7. 实现查询函数，参数为学号，如果学生存在，则输出学生信息，不存在输出提示，并返回是否查询成功
# 8. 实现查询函数，参数为姓名，如果学生存在，则输出学生信息（同名学生全部输出），不存在输出提示，并返回是否删除成功
# 9. 实现函数，输出所有学生信息
list_student=[
{
        "id":"01",
        "name":"z汉三",
        "age":12,
        "sex":"按"
    },
{
        "id":"02",
        "name":"z汉三",
        "age":12,
        "sex":"按"
    },
{
        "id":"02",
        "name":"汉三",
        "age":12,
        "sex":"按"
    }

]
def add_student(id:str,name,age,sex):
    # 要判断id是否存在
    if not  select_by_id(id):
        data={
            "id":id,
            "name":name,
            "age":age,
            "sex":sex
        }
        list_student.append(data)
        return True
    else:
        return False

def select_by_id(id:str):
    for student in list_student:
        if id in student.values():
            return  student
    else:
        return  False
def select_by_name(name):
    list_name=[]
    for student in list_student:
        if name in student.values():
            list_name.append(student)
    return list_name
def delete_by_id(id:str)->bool:
    if select_by_id(id):
        for i in range(len(list_student)):
            if id in list_student[i].values():
                list_student.pop(i)
                return True
    else:
        return False
# 6. 实现删除函数，参数为姓名，如果学生存在，则进行删除（同名学生全部删除），不存在输出提示，并返回是否删除成功
def delete_by_name(name)->bool:
    if select_by_name(name):
        for i in range(len(list_student)-1,-1,-1):
            if name in list_student[i].values():
                list_student.pop(i)
        else:
            return True
    else:
        return False
def update_by_id(id:str,name,age,sex)-> bool:
    if select_by_id(id):
        for i in range(len(list_student)):
            if id in list_student[i].values():
                list_student[i]["name"]=name
                list_student[i]["age"]=age
                list_student[i]["sex"]=sex
                return True
            else:
                return False
def  select_all():
    for student in list_student:
        print(student)
def main():
    while True:
        print("****************************************")
        print("*                                学生管理系统                         *")
        print("*              1. 添加新学生信息              *")
        print("*             2. 通过学号修改学生信息                 *")
        print("*                3. 通过学号删除学生信息                 *")
        print("*                4. 通过姓名删除学生信息                 *")
        print("*             5. 通过学号查询学生信息          *")
        print("*                6. 通过姓名查询学生信息          *")
        print("*                7. 显示所有学生信息             *")
        print("*                8. 退出系统                                           *")
        print("****************************************")
        select_op = input("输入编号选择操作：")
        if select_op=="1":
            id=input("请输入学号：")
            name=input("请输入姓名：")
            age=input("请输入年龄：")
            sex=input("请输入性别：")
            if  add_student(id,name,age,sex):
                print("添加成功")
            else:
                print("添加失败")

        elif select_op=="2":
            id=input("请输入学号：")
            name=input("请输入姓名：")
            age=input("请输入年龄：")
            sex=input("请输入性别：")
            if  update_by_id(id,name,age,sex):
                print("修改成功")
            else:
                print("修改失败")
        elif select_op=="3":
            id=input("请输入学号：")
            if  delete_by_id(id):
                print("删除成功")
            else:
                print("删除失败")

        elif select_op=="4":
            name=input("请输入姓名：")
            if  delete_by_name(name):
                print("删除成功")
            else:
                print("删除失败")
        elif select_op=="5":
            id=input("请输入学号：")
            student= select_by_id(id)
            if student:
                print(student)
            else:
                print("没有此学生")
        elif select_op=="6":
            name=input("请输入姓名：")
            student= select_by_name(name)
            if student:
                print(student)
            else:
                print("没有此学生")
        elif select_op=="7":
            select_all()
        elif select_op == "8":
                break
main()





